package com.whd.demo;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

/**
 * @author whd
 * @date 2023/07/26 19:33:27
 */
public class Demo4 {

}

class Server{
    public static void main(String[] args) throws Exception {
        System.out.println("服务端启动");

        DatagramSocket socket=new DatagramSocket(1000);
        byte[] byte1=new byte[1024*64];//一次发送数据最大为64KB
        while (true) {

            DatagramPacket packet=new DatagramPacket(byte1,byte1.length);
            socket.receive(packet);
            int len=packet.getLength();//得到发送字节的长度
            String s=new String(byte1,0,len);
            System.out.println("收到了"+s);
        }
    }
}

class Client{
    public static void main(String[] args) throws Exception {
        System.out.println("客户端启动");
        DatagramSocket d1=new DatagramSocket();//默认端口号，可以不添加
        //创建一个可以封装数据的数据包
        /**
         public DatagramPacket(byte buf[] 封装要发送的数据, int length, 要发送数据长度
         InetAddress address, 服务端的地址 int port服务端的端口号) {
         this(buf, 0, length, address, port);
         }
         */
        Scanner sc=new Scanner(System.in);

        while (true) {
            System.out.println("请说：");
            String st=sc.nextLine();
            byte[] bytes=st.getBytes();
            DatagramPacket datagramPacket=new DatagramPacket(bytes,bytes.length, InetAddress.getLocalHost(),1000);
            if("exit".equals(st)){
                System.out.println("成功退出");
                d1.close();
                break;
            }
            d1.send(datagramPacket);//发送端口
        }
    }
}
